    function N = imedgesegments(im, show)
    %IMEDGESEGMENTS
    %   Returns the number of isolated segments in an imedge, given the edges
    %   of that image
    [B, L, N, A] = bwboundaries(im, 8, 'noholes');

    if show
        imshow(im);hold on;
        colors = ['b' 'g' 'r' 'c' 'm' 'y'];
        for k = 1:length(B)
            boundary = B{k};
            cidx = mod(k, length(colors))+1;
            plot(boundary(:,2), boundary(:,1), colors(cidx), 'LineWidth', 2);

            % Randomize text position for better visibility
            rndRow = ceil(length(boundary)/(mod(rand*k, 7)+1));
            col = boundary(rndRow, 2); row = boundary(rndRow, 1);
            h = text(col+1, row-1, num2str(L(row,col)));
            set(h,'Color',colors(cidx),'FontSize',14,'FontWeight','bold');
        end
        hold off;
    end
    